﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Data;

namespace AvaProvi
{
    class clsAvaluo_CD
    {
        private dsAvaluos dsAvaluo;
        private dsAvaluosTableAdapters.AvaluosTableAdapter TAAvaluo;

        public clsAvaluo_CD()
        {
            dsAvaluo = new dsAvaluos();
            dsAvaluo.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
            dsAvaluo.DataSetName = "dsAvaluos";

            //se le debe pasar la conección
            TAAvaluo = new dsAvaluosTableAdapters.AvaluosTableAdapter();
            TAAvaluo.ClearBeforeFill = true;
        }

        public BindingList<dsAvaluos.AvaluosRow> RecuperaAvaluos()
        {
            BindingList<dsAvaluos.AvaluosRow> blAvaluos = new BindingList<dsAvaluos.AvaluosRow>();
            
                TAAvaluo.RecuperaAvaluos(dsAvaluo.Avaluos);
                foreach (dsAvaluos.AvaluosRow avaluo in dsAvaluo.Avaluos)
                {
                    try
                    {
                        blAvaluos.Add(avaluo);
                    }
                    catch (Exception e) { }
                }
            
            return blAvaluos;
        }

        public BindingList<dsAvaluos.AvaluosRow> RecuperaAvaluosDeCapturista(string Capturista)
        {
            BindingList<dsAvaluos.AvaluosRow> blAvaluos = new BindingList<dsAvaluos.AvaluosRow>();
            TAAvaluo.RecuperaAvaluosDeCapturista(dsAvaluo.Avaluos, Capturista);
            foreach (dsAvaluos.AvaluosRow avaluo in dsAvaluo.Avaluos)
            {
                blAvaluos.Add(avaluo);
            }
            return blAvaluos;
        }

        public bool CreaAvaluo(clsAvaluo_CRN objAvaluo)
        {
            /* Se crea un nuevo AvaluosRow, se le asignan los valores del objAvaluo,
             * se le agrega el nuevo registro al dataset y se ejecuta el 
             * update del TableAdapter, de esta forma se puede obtener el ID del
             * avaluo insertado(autoincrementable)*/
            dsAvaluos.AvaluosRow filaAvaluo = dsAvaluo.Avaluos.NewAvaluosRow();
            filaAvaluo.Capturista = objAvaluo.Capturista.LoginName;
            filaAvaluo.ClaveAvaluo = objAvaluo.ClaveAvaluo;
            filaAvaluo.ClaveControlador = objAvaluo.ClaveControladorSHF;
            filaAvaluo.ClaveValuador = objAvaluo.ClaveValuador;
            filaAvaluo.CondicionInfonavit = objAvaluo.CondicionInfonavit;
            filaAvaluo.ConsideracionesPrevias = objAvaluo.ConsideracionesPrevias;
            filaAvaluo.FechaAvaluo = objAvaluo.FechaAvaluo;
            filaAvaluo.FechaInspeccion = objAvaluo.FechaInspeccion;
            filaAvaluo.Folio = objAvaluo.Folio;
            filaAvaluo.FolioIntermediario = objAvaluo.FolioIntermediario;
            filaAvaluo.FolioValuador = objAvaluo.FolioValuador;
            filaAvaluo.IDAvaluo = 0;
            filaAvaluo.Intermediario = objAvaluo.Intermediario;
            filaAvaluo.LineaInfonavit = objAvaluo.LineaInfonavit;
            filaAvaluo.Objetivo = objAvaluo.Objetivo;
            filaAvaluo.ObservacionesSantander = objAvaluo.ObservacionesSantander;
            filaAvaluo.Proposito = objAvaluo.Proposito;
            filaAvaluo.Regimen = objAvaluo.Regimen;
            filaAvaluo.Revisor = objAvaluo.Revisor;
            filaAvaluo.ValorReferencial = objAvaluo.ValorReferencial;
            this.dsAvaluo.Avaluos.AddAvaluosRow(filaAvaluo);
            int registrosAfectados = TAAvaluo.Update(dsAvaluo);
            objAvaluo.IdAvaluo = filaAvaluo.IDAvaluo;
            return registrosAfectados > 0 ? true : false;
        }

        public bool AcualizaAvaluo(clsAvaluo_CRN objAvaluo)
        {
            int registrosAfectados = TAAvaluo.AcualizaAvaluo(
                objAvaluo.Folio,
                objAvaluo.ClaveAvaluo,
                objAvaluo.ValorReferencial,
                objAvaluo.Capturista.LoginName,
                objAvaluo.Revisor,
                objAvaluo.Intermediario,
                objAvaluo.LineaInfonavit,
                objAvaluo.CondicionInfonavit,
                objAvaluo.FolioValuador,
                objAvaluo.FolioIntermediario,
                objAvaluo.FechaAvaluo,
                objAvaluo.FechaInspeccion,
                objAvaluo.ClaveValuador,
                objAvaluo.ClaveControladorSHF,
                objAvaluo.Proposito,
                objAvaluo.Objetivo,
                objAvaluo.Regimen,
                objAvaluo.ConsideracionesPrevias,
                objAvaluo.ObservacionesSantander,
                objAvaluo.IdAvaluo);
            return registrosAfectados > 0 ? true : false;
        }

        public bool EliminaAvaluo(clsAvaluo_CRN objAvaluo)
        {
            int registrosAfectados = TAAvaluo.EliminaAvaluo(objAvaluo.IdAvaluo);
            return registrosAfectados > 0 ? true : false;
        }

    }
}
